package com.ticket.system.service;

import java.math.BigDecimal;
import java.util.List;
import com.ticket.system.domain.TYanchuPointsRule;

/**
 * 积分规则Service接口
 * 
 * @author ruoyi
 * @date 2024-03-18
 */
public interface ITYanchuPointsRuleService 
{
    /**
     * 查询积分规则
     * 
     * @param id 积分规则主键
     * @return 积分规则
     */
    public TYanchuPointsRule selectTYanchuPointsRuleById(Long id);

    /**
     * 查询积分规则列表
     * 
     * @param tYanchuPointsRule 积分规则
     * @return 积分规则集合
     */
    public List<TYanchuPointsRule> selectTYanchuPointsRuleList(TYanchuPointsRule tYanchuPointsRule);

    /**
     * 新增积分规则
     * 
     * @param tYanchuPointsRule 积分规则
     * @return 结果
     */
    public int insertTYanchuPointsRule(TYanchuPointsRule tYanchuPointsRule);

    /**
     * 修改积分规则
     * 
     * @param tYanchuPointsRule 积分规则
     * @return 结果
     */
    public int updateTYanchuPointsRule(TYanchuPointsRule tYanchuPointsRule);

    /**
     * 批量删除积分规则
     * 
     * @param ids 需要删除的积分规则主键集合
     * @return 结果
     */
    public int deleteTYanchuPointsRuleByIds(Long[] ids);

    /**
     * 删除积分规则信息
     * 
     * @param id 积分规则主键
     * @return 结果
     */
    public int deleteTYanchuPointsRuleById(Long id);

    /**
     * 异步
     * 根据各自的业务场景传入不同的type 当涉及金额时需要传入金额，否则则不需要传金额
     * @param ruleType ①注册新用户、②演出购票、③演出评价、④实名认证、⑤充值、⑥完善个人信息、⑦演出分享、⑧添加常用观演人
     * @param money
     */
    void addPoints(int ruleType, BigDecimal money,Long userId);

    void resetScore();
}
